package Hot100.Medium.Array;

/**
 * // 00->02,01->12,02->22
 *    10->01,11->11,12->21
 *    可以看出（i，j）-> (j, n - 1 - i);
 *    因此可以先转置，i，j——》j，i，再翻转，j，n-1-i
 */
public class LC48_RotateImage {
    public static void main(String[] args) {


    }
    public void rotate(int[][] matrix){
        // 转置数组matrix
        int len = matrix.length;;
        for(int i = 0; i < len; i++){
            for(int j = i + 1; j < len; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        for(int i = 0; i < len; i++){
            for(int j = 0; j < len / 2; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][len - j - 1];
                matrix[i][len - j - 1] = temp;
            }
        }
    }




    public void rotate2(int[][] matrix){
        int n = matrix.length;
        // 转置
        for(int i = 0; i < n; i++){
            for(int j = i + 1; j < n; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        // 转置之后进行行翻转
        for(int i = 0; i < n; i++){
            for(int j = 0; j < n / 2; j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[i][n - j - 1];
                matrix[i][n - j - 1] = temp;
            }
        }
    }
}
